//
//  NSDate+Extension.swift
//  Weibo
//
//  Created by Northwan on 16/1/29.
//  Copyright © 2016年 cn.northwan. All rights reserved.
//

import Foundation


extension NSDate {
    class func sinaDate(createStr:String)->NSDate?{
        let dt = NSDateFormatter()
        //指定格式
        dt.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        dt.locale = NSLocale(localeIdentifier: "en_US")
        let createDate = dt.dateFromString(createStr)
        return createDate
    }

    
    /*
    是今年：
        是今天：
            1分钟内：刚刚
            1小时内：xx分钟前
            其他: xx小时前
        是昨天：昨天 xx:xx
        其他：xx-xx xx:xx
    
    不是今年:
        2016-01-29 19:19
    */
    var singDateString:String{
        let dt = NSDateFormatter()
        //指定格式
        dt.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        dt.locale = NSLocale(localeIdentifier: "en_US")
        
        let calendar =  NSCalendar.currentCalendar()
        if isThisYear(self) {
            if calendar.isDateInToday(self){//今天
                let timeInterval = -self.timeIntervalSinceNow
                
                if timeInterval < 60{
                    return "刚刚"
                }else if timeInterval < 60 * 60{
                    return "\(Int(timeInterval) / 60)分钟前"
                }else {
                    return "\(Int(timeInterval) / (60 * 60))小时前"
                }
            }else if calendar.isDateInYesterday(self){//昨天
                dt.dateFormat = "昨天 HH:mm"
            }else{//其他
                dt.dateFormat = "MM-dd HH:mm"
            }
        }else{
            dt.dateFormat = "yyyy-MM-dd HH:mm"
        }
        return dt.stringFromDate(self)
    }
    
    /**
     判断是否是今年
     
     - parameter date: date
     
     - returns:
     */
    private func isThisYear(date:NSDate)->Bool{
        let currentDate = NSDate()
        
        let dt = NSDateFormatter()
        dt.dateFormat = "yyyy"
        dt.locale = NSLocale(localeIdentifier: "en_US")
        
        let dateStr = dt.stringFromDate(date)
        let currentDateStr = dt.stringFromDate(currentDate)
        
        return (dateStr as NSString).isEqualToString(currentDateStr)
    }
}